<?php

/******************************************************
	* Vue pour l'affichage du formulaire client (admin)					  *
	* Récuperation du template AfficherClientTemplate.xsl  *
	* Et remplissage de $content avec le template		  *
	******************************************************/
	
class AfficherClientView extends View
{

	protected $xmlDoc;
	protected $parentNode;
	protected $xslt;
	
	public function __construct(){
		//on recupere le path de notre template et du layout (ici le template est une feuille de style xsl)
		$temp=dirname(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'template'.DIRECTORY_SEPARATOR.'AfficherClientTemplate.xsl';
		$this->setTemplate($temp);
		$lay=dirname(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'layout'.DIRECTORY_SEPARATOR.'Layout.php';
		$this->setLayout($lay);
	}
	
	
	public function display(HttpRequest $request)
    {
        $this->setRequest($request);
		$tab="";
		//si un message a été envoye depuis une action
		if(count($request->getMessages())>0){
			$tabMessage=$request->getMessages();
			$tab=$tabMessage[0];
		}
		//on creer le fichier xml qui sera utilise par la feuille de style
		$this->createClientXML($request->getObject('client'),$tab);
		$this->prepareOutput();
		//on démarre la temporisation de sortie
        ob_start();
		//on effectue la transformation xslt (xml +feuille de style)
        $content= print($this->xslt->transformToXML($this->xmlDoc));
		//on recupere le contenu du tampon
        $content = ob_get_contents();
		//on efface le contenu du tampon
        ob_end_clean();
		//on inclut le layout
        include $this->getLayout();
    }
	 
	 
	
	
	 public function prepareOutput()
    {
		$xsl=new DomDocument();
		//on charge la feuille de style xsl
		$xsl->load($this->getTemplate());
		//on creer notre objet xslt
		$this->xslt= new XSLTProcessor();
		//on importe la feulle de style pour la fusion future
		$this->xslt->importStylesheet($xsl);
	}
	
	function createClientXML($client,$tab){
	        //Le fichier xml genere sera de la forme suivante
			/*	<Clients>
				<msgerreur></msgerreur>
				<action>modifier</action>
				<client id="1">
					<nom>pinson</nom>
					<prenom>fabien</prenom>
					<login>fab</login>
					<pass>fab</pass>
					<telephone>01020202</telephone>
					<email>test@hotmil.fr</email>
					<adresse>rue des mrmandes</adresse>
					<ville>rochefort</ville>
					<codepostal>17300</codepostal>
					<sexe>Masculin</sexe>
				</client> 
 
			</Clients>*/
		
			$this->xmlDoc = new DomDocument('1.0','utf-8');
			//creation de la balise mere
			$this->parentNode=$this->xmlDoc->appendChild($this->xmlDoc->createElement('Clients'));
			//creation de mesg d'erreur
			$msgErreurNode=$this->xmlDoc->createElement('msgerreur');
			$this->parentNode->appendChild($msgErreurNode);
			
			if ($tab!="")  {
			$msgErreurNode->appendChild($this->xmlDoc->createTextNode($tab));
			}
			//creation de l'action a effectuer (modifier ou creer) a la soumission du form
			$actionNode=$this->xmlDoc->createElement('action');
			$this->parentNode->appendChild($actionNode);
			if($client->getId()==-1) {
			 $action='Creer';
			}
			else
			{
			 $action='Modifier';
			}
			$actionNode->appendChild($this->xmlDoc->createTextNode($action));
			//creation du client
			$clientNode=$this->xmlDoc->createElement('client');
			$this->parentNode->appendChild($clientNode);
			$clientNode->setAttribute("id", $client->getId());
			
			$nomNode=$this->xmlDoc->createElement('nom');
			$clientNode->appendChild($nomNode);
			$nomNode->appendChild($this->xmlDoc->createTextNode($client->getNom()));
			
			$prenomNode=$this->xmlDoc->createElement('prenom');
			$clientNode->appendChild($prenomNode);
			$prenomNode->appendChild($this->xmlDoc->createTextNode($client->getPrenom()));
			
			$loginNode=$this->xmlDoc->createElement('login');
			$clientNode->appendChild($loginNode);
			$loginNode->appendChild($this->xmlDoc->createTextNode($client->getLogin()));
			
			$passNode=$this->xmlDoc->createElement('pass');
			$clientNode->appendChild($passNode);
			$passNode->appendChild($this->xmlDoc->createTextNode($client->getMotDePasse()));
			
			$telephoneNode=$this->xmlDoc->createElement('telephone');
			$clientNode->appendChild($telephoneNode);
			$telephoneNode->appendChild($this->xmlDoc->createTextNode($client->getTelephone()));
			
			$emailNode=$this->xmlDoc->createElement('email');
			$clientNode->appendChild($emailNode);
			$emailNode->appendChild($this->xmlDoc->createTextNode($client->getEmail()));
			
			$adresseNode=$this->xmlDoc->createElement('adresse');
			$clientNode->appendChild($adresseNode);
			$adresseNode->appendChild($this->xmlDoc->createTextNode($client->getAdresse()));
			
			$villeNode=$this->xmlDoc->createElement('ville');
			$clientNode->appendChild($villeNode);
			$villeNode->appendChild($this->xmlDoc->createTextNode($client->getVille()));
			
			$codepostalNode=$this->xmlDoc->createElement('codepostal');
			$clientNode->appendChild($codepostalNode);
			$codepostalNode->appendChild($this->xmlDoc->createTextNode($client->getCodePostal()));
			
			$sexeNode=$this->xmlDoc->createElement('sexe');
			$clientNode->appendChild($sexeNode);
			$sexeNode->appendChild($this->xmlDoc->createTextNode($client->getSexe()));
			
	
		}
}
?>
